A. Technical Field
The present invention relates generally to the encoding of data for transmission along a communications link, and more particularly, to the selection of prediction modes for a video frame in which data is encoded prior to transmission.
B. Background of the Invention
The burden of high bandwidth applications, such as voice and video, on networks is continually increasing. To facilitate these bandwidth intensive applications, compression technology and standards are evolving to allow these applications to be more effectively communicated across a network to a client. One such standard that relates to the encoding and decoding of video signals is MPEG-4's latest video coding standard referred to as MPEG-4/AVC (Advanced Video Coding Standard), which is also commonly referred to by its International Telecommunications Union standard name of H.264. For higher coding efficiencies, MPEG-4/AVC provides tools for variable block size motion compensation prediction for encoding video macroblocks. This prediction may also include sub-pixel interpolation within a block to further increase the performance of encoding the macroblock.
Although this standard generally improves the method in which data is encoded, it may also place a significant strain on the processing resources of the encoder itself. Because of the time-sensitive nature of transmitting and receiving video data, an encoder has a limited amount of time to select an appropriate encoding method for a video frame, encode the video frame, and transmit the frame onto a network. The quality of the video signal may be jeopardized if the encoder is unable to complete all of the necessary encoding computations, within the requisite time, that may be needed to encode and transmit the video signal.
FIG. 1 illustrates a typical communications link 120 on which an encoded video signal may be communicated. As illustrated, a video camera 110 generates a video signal which is sent to an encoder 115. This encoder 115 may be software located on a computer or server that is connected to the communications link 120. The encoder 115 receives a video frame which is typically divided in macroblocks for encoding purposes. Depending on the content homogeneity within these macroblocks, they may be further partitioned into smaller blocks to allow more precision in the encoding process.
Each of these macroblocks, and sub-blocks within a macroblock, may be encoded relative to another block located within the same video frame or relative to a block in a previous or future reference frame within the video signal. This encoding is intended to reduce the amount of data redundancy that is transmitted on the communications link 120.
There are typically two types of modes, intra and inter mode, in which a macroblock may be encoded. Intra mode encoding defines an encoding process relative to one or more blocks within the same video frame. Inter mode encoding defines an encoding process relative to one or more reference frames outside the current video frame. After a macroblock is encoded, it is transmitted, via the communications link 120, to a receive-side decoder 125. The decoder 125 reconstructs the macroblock within the video signal so that it may be shown on the display device 130.
As mentioned above, when inter mode encoding is performed, a macroblock (e.g., a 16×16 block within a video frame) is encoded relative to a macroblock in another reference frame. The encoder may select from a number of different modes to encode a particular macroblock. In a number of current systems, motion compensated prediction analysis for each of the modes is performed to select a preferred mode.
Motion compensated prediction may be performed at both integer-pixel and sub-pixel levels depending on the application and standard being applied. Integer-pixel compensation focuses on motion estimation and prediction corresponding to pixel values within a reference frame or frames. Comparatively, sub-pixel compensation focuses on motion estimation and prediction corresponding to interpolated sample positions within a reference frame or frames. This sub-pixel compensation may be performed according to various sub-pixel interpolation granularities, including half-pixel and quarter-pixel compensation, from which the interpolated sample positions are generated. Typically, sub-pixel compensation provides better performance and coding efficiency than integer-pixel compensation. However, sub-pixel compensation has been more complex and required more processing resources than integer-pixel compensation.